#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
int g_unval;
int g_val=100;
int main(int argc,char* argv[],char*env[])
{
  const char* str="hello";
  printf("code addr:%p\n",main);
  printf("init global addr:%p\n",&g_val);
  printf("uninit global addr:%p\n",&g_unval);
  static int test = 10;
  char *heap_mem = (char*)malloc(10);
   char *heap_mem1 = (char*)malloc(10);
   char *heap_mem2 = (char*)malloc(10);
   char *heap_mem3 = (char*)malloc(10);
    printf("heap addr: %p\n", heap_mem);
    printf("heap addr: %p\n", heap_mem1);
    printf("heap addr: %p\n", heap_mem2); 
     printf("heap addr: %p\n", heap_mem3);
     printf("test staic addr: %p\n", &test); 
      printf("stack addr: %p\n", &heap_mem);
       printf("stack addr: %p\n", &heap_mem1);
       printf("stack addr: %p\n", &heap_mem2);
       printf("stack addr: %p\n", &heap_mem3);
       printf("read only string addr: %p\n", str);
       int i,j;
       for( i = 0 ;i < argc; i++)
       {
                 printf("argv[%d]: %p\n", i, argv[i]);
                     
       }
        for( j = 0; env[j]; j++)
        {
                  printf("env[%d]: %p\n",j, env[j]);
                      
        }
        return 0;

}
